#!/usr/bin/env python
# -*- coding: utf8 -*-
# 
# Programado por Juan Marcelo Conca y Pablo Carrai

#
# Este programa es software libre; usted puede redistruirlo y/o modificarlo bajo
# los términos de la Licencia Pública General GNU, tal y como está publicada
# por la Free Software Foundation; ya sea la versión 2 de la Licencia, o (a su
# elección) cualquier versión posterior.
#
# Este programa se distribuye con la intención de ser útil, pero SIN NINGUNA
# GARANTÍA; incluso sin la garantía implícita de USABILIDAD O UTILIDAD PARA UN
# FIN PARTICULAR. Vea la Licencia Pública General GNU para más detalles.
#
# Usted debería haber recibido una copia de la Licencia Pública General GNU
# junto a este programa; si no es así, escriba a la Free Software Foundation,
# Inc. 675 Mass Ave, Cambridge, MA 02139, EEUU.
#
# Programado en python utilizando geany como editor, y para la parte grafica
# wxglade


import wx,MySQLdb


class Ingreso(wx.Frame):
    def __init__(self, *args, **kwds):

        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel_1 = wx.Panel(self, -1)
        self.label_1 = wx.StaticText(self.panel_1, -1, "Nombre")
        self.text_ctrl_1 = wx.TextCtrl(self.panel_1, -1, "")
        self.text_ctrl_1.SetFocus()
        self.label_2 = wx.StaticText(self.panel_1, -1, "Apellido")
        self.text_ctrl_2 = wx.TextCtrl(self.panel_1, -1, "")
        self.label_3 = wx.StaticText(self.panel_1, -1, "Telefono")
        self.text_ctrl_3 = wx.TextCtrl(self.panel_1, -1, "")
        self.label_4 = wx.StaticText(self.panel_1, -1, "Mail")
        self.text_ctrl_4 = wx.TextCtrl(self.panel_1, -1, "")
        self.label_5 = wx.StaticText(self.panel_1, -1, "Direccion")
        self.text_ctrl_5 = wx.TextCtrl(self.panel_1, -1, "")
        self.button_1 = wx.Button(self.panel_1, wx.ID_SAVE, "")
        self.Bind(wx.EVT_BUTTON,self.OnIngresar,self.button_1)
        self.button_2 = wx.Button(self.panel_1, wx.ID_CANCEL, "")
        self.Bind(wx.EVT_BUTTON,self.OnSalir,self.button_2)

        self.__set_properties()
        self.__do_layout()

        
    def __set_properties(self):
        
        self.SetTitle("Ingreso de contacto")
        self.SetSize((350, 280))
        self.CenterOnScreen()
        self.text_ctrl_1.SetMinSize((200, 25))
        self.text_ctrl_2.SetMinSize((200, 25))
        self.text_ctrl_3.SetMinSize((200, 25))
        self.text_ctrl_4.SetMinSize((200, 25))
        self.text_ctrl_5.SetMinSize((200, 25))

    def __do_layout(self):

        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.FlexGridSizer(6, 2, 0, 0)
        grid_sizer_1.Add(self.label_1, 0, wx.ALL, 10)
        grid_sizer_1.Add(self.text_ctrl_1, 0, wx.ALL|wx.EXPAND, 10)
        grid_sizer_1.Add(self.label_2, 0, wx.ALL, 10)
        grid_sizer_1.Add(self.text_ctrl_2, 0, wx.ALL|wx.EXPAND, 10)
        grid_sizer_1.Add(self.label_3, 0, wx.ALL, 10)
        grid_sizer_1.Add(self.text_ctrl_3, 0, wx.ALL|wx.EXPAND, 10)
        grid_sizer_1.Add(self.label_4, 0, wx.ALL, 10)
        grid_sizer_1.Add(self.text_ctrl_4, 0, wx.ALL|wx.EXPAND, 10)
        grid_sizer_1.Add(self.label_5, 0, wx.ALL, 10)
        grid_sizer_1.Add(self.text_ctrl_5, 0, wx.ALL|wx.EXPAND, 10)
        grid_sizer_1.Add(self.button_1, 0, wx.ALL|wx.ALIGN_BOTTOM, 10)
        grid_sizer_1.Add(self.button_2, 0, wx.ALL|wx.ALIGN_RIGHT|wx.ALIGN_BOTTOM, 10)
        self.panel_1.SetSizer(grid_sizer_1)
        grid_sizer_1.AddGrowableCol(1)
        sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        self.Layout()


    def OnIngresar(self,evt): # esta es la funcion que ingresa los datos en la base de datos
        # Primero capturamos los valores de los textctrl y los guardamos en variables
        nombre = self.text_ctrl_1.GetValue()
        apellido = self.text_ctrl_2.GetValue()
        telefono = self.text_ctrl_3.GetValue()
        mail = self.text_ctrl_4.GetValue()
        direccion = self.text_ctrl_5.GetValue()

        # Arrancamos la conexion a la base de datos
        db=MySQLdb.connect(host='localhost',user='amalia',passwd='amalia',db='agenda')
        # Creamos un cursor de la misma
        cursor=db.cursor()
        # Y ejecutamos una orden SQL que inserta los datos capturados desde los textctrl
        cursor.execute(''' insert into contactos(nombre, apellido, telefono, mail, direccion) values(%s, %s, %s, %s, %s)''', (nombre, apellido, telefono, mail, direccion))
        # No nos olvidamos de cerrar el cursor
        cursor.close()
        # Y para que quede bien ponemos un dialogo que avisa que la accion se dio por realizada
        dgl = wx.MessageDialog(self,u'Acabas de agregar un contacto a tu agenda',u'Un contacto mas',wx.OK | wx.ICON_INFORMATION)
        dgl.ShowModal()
        # Lo siguiente vacia el contenido de los textctrl por si queremos seguir cargando mas datos
        self.text_ctrl_1.SetValue("")
        self.text_ctrl_2.SetValue("")
        self.text_ctrl_3.SetValue("")
        self.text_ctrl_4.SetValue("")
        self.text_ctrl_5.SetValue("")

        
    def OnSalir(self, event):        
        try:
            self.Destroy()            
        finally:
            import principal
            ventana = principal.Principal(None, -1,"")
            ventana.Show(True)


if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    ventana = Ingreso(None, -1, "")
    app.SetTopWindow(ventana)
    ventana.Show()
    app.MainLoop()
